package com.ruoyi.produce.material.service;




import com.ruoyi.produce.material.domain.ProduceMaterialRequisition;
import com.ruoyi.produce.material.domain.ProduceMaterialRequisitionList;

import java.util.List;

/**
 * 物料领、补、退信息
 * 业务层
 * @author Drj 2021/6/28
 */
public interface IProduceMaterialService {


    /**
     * 物料领、补、退信息查询
     * @param produceMaterialRequisition
     * @return
     */
    public List<ProduceMaterialRequisition> selectProduceMaterialRequisitionList(ProduceMaterialRequisition produceMaterialRequisition);

    /**
     * 按编号查询
     * @param produceMaterialRequisitionId 物料领、补、退信息编号
     * @return
     */
    public ProduceMaterialRequisition selectProduceMaterialRequisitionById(String produceMaterialRequisitionId);

    /**
     * 物料领、补、退信息新增
     * @param produceMaterialRequisition
     * @return
     */
    public int insertProduceMaterialRequisition(ProduceMaterialRequisition produceMaterialRequisition) throws Exception;

    /**
     * 领退补料出入库
     * 用于app
     * @param produceMaterialRequisition
     * @return
     */
    int produceMaterialStorage(ProduceMaterialRequisition produceMaterialRequisition);

    /**
     * 物料领、补、退信息更新
     * @param produceMaterialRequisition
     * @return
     */
    public int updateProduceMaterialRequisition(ProduceMaterialRequisition produceMaterialRequisition) throws Exception;

    /**
     * 更新物料领、补、退信息删除标志位
     * @param produceMaterialRequisition
     * @return
     */
    public int updateProduceMaterialRequisitionDeleteFlag(ProduceMaterialRequisition produceMaterialRequisition);

    /**
     * 物料领、补、退信息详细查询
     * @param produceMaterialRequisitionList
     * @return
     */
    public List<ProduceMaterialRequisitionList> selectProduceMaterialRequisitionListList(ProduceMaterialRequisitionList produceMaterialRequisitionList);

    /**
     * 查询物料领、补、退信息对应的所有产品详细
     * @param produceMaterialRequisitionId 物料领、补、退信息编号
     * @return
     */
    public List<ProduceMaterialRequisitionList> selectProduceMaterialRequisitionListListById(String produceMaterialRequisitionId);

    /**
     * 查询物料领、补、退信息对应的指定产品详细
     * @param produceMaterialRequisitionId
     * @return
     */
    public ProduceMaterialRequisitionList  selectProduceMaterialRequisitionListById(String produceMaterialRequisitionId, String produceId);
    /**
     * 获取加工单对应物料信息
     * @param workSheetId 加工单号
     * @return
     */
    public List<ProduceMaterialRequisitionList> getMaterialRequisitionFromWorkSheet(String workSheetId);
    /**
     * 获取加工单对应物料信息
     * 新增退料单
     * @param workSheetId 加工单号
     * @return
     */
    public List<ProduceMaterialRequisitionList> getMaterialRequisitionFromWorkSheetForReturn(String workSheetId);
}
